出于对资源的利用,我需要从 Debian 上面移除一块长期使用率只有 1% 的磁盘,在此之前我需要先测试一下主磁盘的 SMART 数据顺手再备份一下主磁盘的数据
#检查磁盘状况
先安装 smartmontools 工具
sudo apt install smartmontools 使用 lsblk 查看磁盘和分区,通常名称为 /dev/sda、/dev/sdb、/dev/nvme0n1
在这里我的是 /dev/nvme0n1 因此使用
sudo smartctl -a /dev/nvme0n1 来查看 smart 信息。
smart 信息通过 AI 分析更好,故此处不再解释,不过可以重点关注下面的几个字段
-
SMART overall-health self-assessment test result,这个值应该必需为PASSED否则需要处理了 -
Critical Warning,反映 SSD 是否处于紧急状况,值应该为0x00 -
Percentage Used,反映 SSD 是剩余寿命百分比,如果到达 100% 说明寿命到了 -
Data Units Written和Data Units Read,结合Percentage Used评估耐久性 -
Available Spare,可用空间百分比 -
Media and Data Integrity Errors,表示因闪存损坏或数据错误导致的不可恢复错误,值应该为 0
#停止对磁盘使用
查看正在使用该磁盘目录的进程,我将磁盘挂载 /mnt 目录上的,因此命令是
sudo lsof /mnt 我的这里有一些 docker 容器在使用,因此需要搭配 sudo docker ps 和 sudo docker stop xxx 停止它们
注意记录有哪些进程在使用,后面需要更新路径引用
#迁移数据
此步骤需确保磁盘空间足够,使用 df -h 查看
由于我只有一个目录 /mnt/data 因此在根目录(主磁盘)新建一个 data 目录用于存放数据。
使用 rsync 复制数据
sudo rsync -av --progress /mnt/data/* /data -
-a: 保留权限、时间戳 -
-v: 显示详细输出 -
--progress: 显示复制进度
再使用 diff 校验完整性
sudo diff -r /mnt/data /data 无输出表示一致,无问题后可以删除原始数据
#卸载磁盘
卸载挂载点
sudo umount /mnt 正常应该没有任何输出,如果提示“device is busy”,再次谁在使用
lsof /mnt 验证是否正确卸载
df -h
mount | grep /mnt 禁用自动挂载
检查 /etc/fstab 文件是否有 /mnt 存在则编辑文件注释或删除
cat /etc/fstab 同步并刷新缓存、重载守护服务
sync
sudo systemctl daemon-reload #更新目录使用
由于这一块盘本身利用率就低,加上我之前使用了软链接将 /mnt/data 链接到了 /data 目录,因此这里不需要更新,不过保险起见还是检查一下
先进行 docker ps -a 列出所有容器,在依次排查 docker inspect {container_id} | grep /mnt
在搭配前面记录使用的进程,检查可能存在的路径引用
#关闭电源
在确保无误后便可以关机卸下磁盘了
sudo shutdown -h now #UnRaid 拆卸磁盘
本来这一块应该一同记录,因为就是将拆下的磁盘就是装到 UnRaid 上,但忘记记录了,只能补充写一下思路方便下一次使用。
UnRaid 的磁盘目录由“阵列 (array)”和“缓存 (cache)”两个部分组成,在 /mnt 目录表示如下
/mnt/
├─ cache/
├─ disk1/
├─ disk2/
├─ user/
├─ user0/ 其中 disk1 、disk2 代表的阵列的磁盘,而 cache 目录便是缓存的磁盘,所有的数据均在这些目录中。
而 user 目录是整合了缓存盘和阵列盘上所有的共享文件夹,user0 同 user 类似,但排除了缓存盘。
我并没有开启奇偶校验,因此后续充满风险,如果开启了奇偶校验应该可以直接进行数据重建,就是速度比较慢。
后续流程基于 UnRaid 7.0.0 进行操作
#1. 检查要卸载磁盘有那些目录使用和迁移数据
在 UnRaid WebUI 中来到主界面 (Main) 点击磁盘名称左侧的图标浏览目录。记录下存在的目录,比如 appdata、system
然后来到共享界面 (Shares) 通过点击目录名称处进入设置查看对应的共享目录的设置。
如图如果只有一个磁盘(为缓存),则可以更改其“主存储空间”为缓存盘或其他用来临时存放的和“辅助存储”为当前磁盘,然后利用 Mover 迁移(Cache -> 阵列),也可如下面一样手动移动。
如果该目录存在有多个磁盘(阵列)则需要在“已排除的磁盘”处将当前磁盘排除,然后回到主界面 (Main) 处进入当前磁盘的目录移动数据到其他阵列。未经测试,注意备份数据
注意不要将任意数据复制到 /mnt/user 或 /mnt/user0 下,可能会导致死循环
#2. 卸载磁盘和重新配置
确保关机前,该磁盘目录下没有任何文件夹和文件。
关机后直接取下该磁盘即可,开机后需要调整磁盘阵列,可以在 工具 (Tools) 处点击新配置 (NewConfig) 创建新的磁盘阵列
接下来就是调整共享目录的设置,之前移动数据前可能调整了共享目录的配置,可能需要重新配置。